package com.pmcc.utils;

import com.google.zxing.BarcodeFormat;
import com.google.zxing.EncodeHintType;
import com.google.zxing.MultiFormatWriter;
import com.google.zxing.common.BitMatrix;

import java.io.File;
import java.net.URL;
import java.util.HashMap;
import java.util.Map;

/**
 * 二维码生成类
 * Created by lihaiyue on 2017/6/18.
 */
public class QRCodeUtils {
    /**
     * 生成图像
     *
     * @param width    图像宽度
     * @param height   图像高度
     * @param filePath 生成二维码的路径
     * @param fileName 生成的二维码图片名称
     * @param format   图片类型
     * @param content  二维码内容
     * @param logoPath logo地址
     */
    public static void formatEncode(int width, int height, String filePath, String fileName, String format, String content, URL logoPath) {
        try {
            // 创建文件位置
            File tmpFile = new File(filePath);
            if (!tmpFile.exists()) {
                tmpFile.mkdirs();
            }
            Map<EncodeHintType, Object> hints = new HashMap<>();
            hints.put(EncodeHintType.CHARACTER_SET, "UTF-8");
            BitMatrix bitMatrix = new MultiFormatWriter().encode(content, BarcodeFormat.QR_CODE, width, height, hints);// 生成矩阵
            File file = new File(filePath, fileName + "." + format);
            MatrixToImageWriter.writeToFile(bitMatrix, format, file, logoPath);
            System.out.println("输出成功");
        } catch (SecurityException ex) {
            ex.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
